The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for providing task scheduling using improved weighted round robin techniques.
Scheduling of tasks is an important functionality to be performed in environments where a plurality of tasks are received for performance by a plurality of devices or individuals. The scheduling of the tasks allows for greater throughput, responsiveness, and overall performance. However, many known scheduling techniques suffer from significant drawbacks, not the least of which is the non-optimum distribution of the tasks to the entities, e.g., devices or individuals, which are to perform those tasks. Many times, known techniques overload some entities while leaving other entities relatively less loaded. Moreover, many techniques do not take into consideration the individual abilities of the entities to handle the tasks that are assigned to them.
One known scheduling technique is the weighted round robin scheduling algorithm. The weighted round robin scheduling algorithm is designed to better handle distributing tasks to entities with different performance capabilities, as opposed to round robin scheduling which assumes that all entities have the same performance capabilities. For example, with regard to an environment in which tasks are distributed to server computing devices, the weighted round robin scheduling algorithm is designed to better handle distributing tasks to servers with different processing capacities. In some known implementations of the weighted round robin scheduling algorithm, each server is assigned a weight value (sometimes herein more simply referred to as a “weight”), which is an integer value that is correlated (at some level of granularity) the processing power and/or capability of the server (herein sometimes referred to as “processing capacity” of the computer or processor(s) set). Servers with higher processing capacity, and thus higher weights than other servers, receive new tasks prior to those that have relatively lower weights. Servers with higher weights tend to get more tasks than those with relatively lower weights (although task size may also impact whether a given task will go to a high-weight or low-weight server). Servers with equal weights to get an equal number of tasks (at least under an assumption of roughly uniform task size). Basic round robin scheduling can be considered a special instance of weighted round robin scheduling where all the weights are the same and thus, all of the servers are considered to have the same processing capability.